package com.tadpole.music.app;

import android.app.Application;
import android.util.Log;

import androidx.multidex.MultiDex;

import com.tadpole.music.config.Constant;
import com.tadpole.music.config.UrlConfig;
import com.tadpole.music.utils.AppManagerUtil;
import com.tadpole.music.utils.Mutils;
import com.tadpole.music.utils.SpUtil;
import com.tadpole.music.utils.ToastUtils;
import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

import org.json.JSONObject;
import org.lzh.framework.updatepluginlib.UpdateConfig;
import org.lzh.framework.updatepluginlib.base.UpdateParser;
import org.lzh.framework.updatepluginlib.model.Update;

import cn.jpush.android.api.JPushInterface;

/**
 * Created By 孙岩
 * on 2020/8/20
 */
public class MyApplication extends Application {
    public static MyApplication app;
    //退出
    public AppManagerUtil finishManager;
    //更新参数
    public  static Update update;
    //微信
    public static IWXAPI mWxApi;

    public static MyApplication getInstance() {
        return app;
    }

    public static long time = System.currentTimeMillis();

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        finishManager = AppManagerUtil.getAppManager();
        updateApp();
        initApp();
    }

    private void updateApp() {
        UpdateConfig.getConfig()
                // 必填：数据更新接口,url与checkEntity两种方式任选一种填写
//                测试
                .setUrl(UrlConfig.getAppVersion)
                //正式
//                .setUrl("http://show.cnosonline.com/api/v2/android_version")
                //.setCheckEntity(new CheckEntity().setMethod(HttpMethod.GET).setUrl("http://www.baidu.com"))
                // 必填：用于从数据更新接口获取的数据response中。解析出Update实例。以便框架内部处理
                .setUpdateParser(new UpdateParser() {
                    @Override
                    public Update parse(String response) throws Exception {
                        /* 此处根据上面url或者checkEntity设置的检查更新接口的返回数据response解析出
                         * 一个update对象返回即可。更新启动时框架内部即可根据update对象的数据进行处理
                         */
                        JSONObject object = new JSONObject(response);
                        if(object.isNull("data")){
                            return null;
                        }else{
                            JSONObject obj = new JSONObject(object.getString("data"));
                            update = new Update();
                            // 此apk包的下载地址
                            update.setUpdateUrl(obj.optString("url"));
                            // 此apk包的版本号
                            update.setVersionCode(Integer.parseInt(obj.getString("version_code")));
                            // 此apk包的版本名称
                            update.setVersionName(obj.optString("version_name"));
                            // 此apk包的更新内容
                            update.setUpdateContent(obj.optString("desc"));
                            // 此apk包是否为强制更新
                            update.setForced(true);
                            // 是否显示忽略此次版本更新按钮
                            update.setIgnore(true);
                            return update;
                        }

                    }
                });
    }

    private void initApp(){
        ToastUtils.init(this);
//        MultiDex.install(this);
//        //微信
//        mWxApi = WXAPIFactory.createWXAPI(this, Constant.WX_APP_ID, true);
//        mWxApi.registerApp(Constant.WX_APP_ID);
//
//        //极光 初始化 JPush
//        JPushInterface.init(this);
//        //bugly 蝌蚪
//        CrashReport.initCrashReport(getApplicationContext(),"721e9114b0",false);
        //小鱼
        //CrashReport.initCrashReport(getApplicationContext(),"df947dc622",false);
    }

}
